A number of organizations employ a local area network to facilitate data communications between various devices (e.g., computing devices, peripheral devices, storage devices and/or the like). Within a typical local area network, a server computer (often simply referred to as a server) performs various data processing/storage tasks—often at the direction of a client computer (often simply referred to as a client). To illustrate one example, the client initiates a file upload process by transmitting a whole file to the server for storage in network-accessible memory.
Uploading files having substantially large data sizes to a server in a traditional client/server network environment is costly in terms of total time consumed, dollars spent and/or computing resources required, including network bandwidth and/or storage capacity. Uploading substantially similar or the same files, whether from various clients or repeatedly from a same client, also incurs significant costs and/or delays. In particular, poor or inadequate network connectivity exacerbates the cost associated with completing a file upload process. A file upload process also may be hindered or restricted by a current network environment. Servers running on certain networks, such as a cloud resource, are designed to timeout file upload requests after a pre-determined threshold time period elapses. Other networks prohibit file uploads that exceed a pre-determined payload size.
Previous solutions prescribe performing file uploads in piecemeal by splitting a file into chunks and uploading each chunk separately. Such solutions, however, are impractical when uploading files of considerable sizes. To demonstrate one such impracticality, if a single chunk upload fails, the entire file upload process is restarted. A more efficient solution for uploading files is desired.